"""
    说明：
        在Selenium中将鼠标操作方法封装在ActionChains类中

    实例化对象：
        action = ActionChains(driver)

    方法：
        context_click(element)          右击 --> 模拟鼠标右键点击效果
        double_click(element)           双击 --> 模拟鼠标双击效果
        drag_and_drop(source, target)   拖动 --> 模拟鼠标拖动效果
        move_to_element(element)        悬停 --> 模拟鼠标悬停效果
        perform()                       执行 --> 此方法用来执行以上所有鼠标操作
"""
# 导包
from selenium import webdriver
from time import sleep

from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By

# 获取浏览器驱动对象
driver = webdriver.Chrome()

# 打开url
url = r"D:\python\python-selenium-learn\a03_元素和浏览器的操作方法\learn-files\注册A.html"
driver.get(url)

# 实例化并获取 ActionChains 类
action = ActionChains(driver)

# 定位用户名在用户名上右击鼠标   预期：粘贴
# 获取用户名元素
username = driver.find_element(By.CSS_SELECTOR, "#userA")
# 调用右击方法
action.context_click(username).perform()
sleep(2)

# 发送用户名，admin并进行双击      预期：选中admin
username.send_keys("admin")
action.double_click(username).perform()
sleep(2)

# 移动到注册按钮上      预期：按钮变色 出现 加入会员
action.move_to_element(driver.find_element(By.CSS_SELECTOR, "#zc > fieldset > button")).perform()

# 暂停3秒
sleep(3)

# 关闭驱动对象
driver.quit()
